#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int map[950][950],vis[1039],line[950][950],pre[1039],m,n,k,t1,t2;
int tx[4]={1,-1,0,0};
int ty[4]={0,0,-1,1};
 
int find(int x){
	for(int i=1;i<=t2;i++){
		if(!vis[i]&&line[x][i]){
			vis[i]=1;
			if(pre[i]==-1||find(pre[i])){
				pre[i]=x;
				return 1;
			}
		}
	}
	return 0;
}
int main()
{
	scanf("%d%d%d",&m,&n,&k);
        memset(map,0,sizeof(map));
        memset(pre,-1,sizeof(pre));
        memset(line,0,sizeof(line));
        int a,b;
        t1=0,t2=0;
		for(int i=1;i<=m;i++)
        	for(int j=1;j<=n;j++){
        		if((i+j-1)%2)
        			map[i][j]=++t1;
        		else
        			map[i][j]=++t2;
			}
        for(int i=1;i<=k;i++){
            scanf("%d%d",&a,&b);
            map[a][b]=-1;
        }
        
        for(int i=1;i<=m;i++){
        	for(int j=1;j<=n;j++){
        		if(map[i][j]!=-1&&(i+j-1)%2){
        			for(int l=0;l<4;l++){
        				int xx=i+tx[l];
        				int yy=j+ty[l];
        				if(xx>=1&&xx<=m&&yy>=1&&yy<=n&&map[xx][yy]!=-1){
        					line[map[i][j]][map[xx][yy]]=1;
						}
					}
				}
			}
		}
		int ans=0;
		for(int i=1;i<=t1;i++)
		{
			memset(vis,0,sizeof(vis));
			if(find(i))
				ans++;
		}
		if(ans%100==20)
			ans+=4;
		printf("%d\n",ans);
	return 0;
}
